pytorch设置随机种子

您所在的位置:网站首页 python 随机数seed pytorch设置随机种子

pytorch设置随机种子

2024-01-23 10:38| 来源: 网络整理| 查看: 265

SEED = 1 ​ ​ def set_seed(seed=1):    random.seed(seed)    np.random.seed(seed)    torch.manual_seed(seed)    torch.cuda.manual_seed_all(seed) ​ ​ set_seed(SEED)  

这段代码是用来设置随机数种子的,目的是为了保证实验的可复现性。随机数种子是用来生成随机数序列的初始值,如果不设置种子,每次运行代码时,随机数序列都会不同,导致实验结果不一致。如果设置了固定的种子,那么每次运行代码时,随机数序列都会相同,实验结果也就可以复现。这段代码中,SEED = 1表示设置种子为1,然后分别调用random, numpy, torch和torch.cuda的seed函数来设置各自的随机数生成器的种子为1。

种子为1是指随机数种子的值是1,也就是说,随机数生成器的初始状态是由1决定的。你可以把种子想象成一个密码,如果你知道了密码,你就可以解开随机数序列的规律,如果你不知道密码,你就无法预测随机数序列的下一个数。种子为1只是一个例子,你也可以设置其他的值作为种子,只要保证每次运行代码时使用相同的种子,就可以复现实验结果。

random是Python自带的标准库,它可以生成各种类型的随机数,如整数,浮点数,字符串,列表等。它的随机数生成器是基于Mersenne Twister算法的,它是一个伪随机数生成器,也就是说,它的随机数序列是有规律的,只是很难预测。random模块主要用于一般的编程任务,如模拟,测试,游戏等。

numpy是一个科学计算库,它提供了高效的多维数组操作和线性代数,傅里叶变换,统计等功能。numpy.random是numpy的一个子模块,它可以生成各种分布的随机数,如均匀分布,正态分布,泊松分布等。它的随机数生成器也是基于Mersenne Twister算法的,但是它可以设置不同的种子来创建不同的随机数生成器实例。numpy.random主要用于科学计算和数据分析的任务,如机器学习,深度学习等。

torch是一个深度学习框架,它提供了强大的张量计算和自动求导功能。torch也有一个torch.random子模块,它可以生成各种分布的随机数,如均匀分布,正态分布,泊松分布等。它的随机数生成器也是基于Mersenne Twister算法的,但是它可以设置不同的设备来创建不同的随机数生成器实例。torch.random主要用于深度学习的任务,如神经网络的初始化,正则化,数据增强等。

我刚才已经简单介绍了这三个模块的不同应用场景和功能,可以参考以下的例子来进一步理解:

如果你想生成一个随机的密码,你可以使用random模块,如:

import random import string password = "".join(random.choices(string.ascii_letters + string.digits, k=8)) print(password)

如果你想生成一个服从正态分布的1000个随机数,并绘制它们的直方图,你可以使用numpy.random模块,如:

import numpy as np import matplotlib.pyplot as plt data = np.random.normal(0, 1, 1000) plt.hist(data, bins=20) plt.show()

如果你想初始化一个神经网络的权重,并在GPU上进行训练,你可以使用torch.random模块,如:

import torch import torch.nn as nn model = nn.Linear(10, 1) model.weight.data = torch.randn(1, 10, device="cuda") model.to("cuda")



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3